﻿using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;

namespace DARE
{
    public sealed class CBonesController : CAnimationController
    {
        public CBonesController() : base((CHierarchy)null)
        {

        }
    }
}
//        #region Fields

//        private readonly CAttachBone m_boneAttach;

//        private Matrix[] worldTransforms;
//        private Matrix[] skinTransforms;

//        #endregion

//        #region Properties

//        public Matrix[] Transfom { get { return skinTransforms; } }

//        public Matrix BoneRoot
//        {
//            get
//            {
//                return this.m_boneAttach.BoneWorld;
//            }
//        }

//        public bool AsBoneAttachRoot
//        {
//            get
//            {
//                return this.m_boneAttach.IsAttach;
//            }
//        }

//        #endregion

//        #region CTOR

//        public CBonesController(CAnimNode[] skeleton) : base(new CSkeleton(skeleton)) { }

//        public CBonesController(CSkeleton _skeleton)
//            : base(_skeleton)
//        {
//            this.m_boneAttach = new CAttachBone();

//            worldTransforms = new Matrix[m_boneCount];
//            skinTransforms = new Matrix[m_boneCount];
//        }

//        #endregion

//        #region Method

//        public Matrix GetWorldMatrixFromIndex(int index)
//        {
//            return this.worldTransforms[index];
//        }

//        protected override void UpdateOverride(Matrix world)
//        {
//            this.m_boneAttach.Update(world);

//            base.UpdateOverride(world);
//        }

//        protected override void HierachiTransfom(Matrix world)
//        {
//            worldTransforms[0] = boneTransforms[0] * this.m_boneAttach.BoneWorld;

//            // Child bones.
//            for (int bone = 1; bone < worldTransforms.Length; bone++)
//            {
//                int parentBone = this.m_hierarchy[bone].ParentIndex;

//                worldTransforms[bone] = boneTransforms[bone] * worldTransforms[parentBone];
//            }

//            for (int e = 0; e < worldTransforms.Length; ++e)
//            {
//                skinTransforms[e] = this.m_hierarchy[e].InvBindPose * worldTransforms[e];
//            }
//        }

//        public bool AttachToBone(CModel _model, string boneName)
        //{
        //    Detach();
//            int index = _model.AnimationController.m_hierarchy.GetIndexByName(boneName);
        //    if (index > -1)
        //    {
//                m_boneAttach.AttachToBone((CBonesController)_model.AnimationController, index);
        //        return true;
        //    }
        //    return false;
        //}

//        //public bool AttachNodeToBone(CNode node, CModel _model, string _boneName)
//        //{
//        //    if (this.m_boneAttach.IsAttach)
//        //        return false;
//        //    Detach();
//        //    int index = _model.AnimationController.m_hierarchy.GetIndexByName(_boneName);
//        //    if (index > -1)
//        //    {
//        //        m_boneAttach..AttachNodeToBone(node, _model.AnimationController, index);
//        //        return true;
//        //    }
//        //    return false;
//        //}

//        public void Detach()
//        {
//            if (m_boneAttach.IsAttach)
//                m_boneAttach.DetachFromBone();
//        }

//        #endregion
//    }
//}
